package com.example.bufferedstream;

import java.io.*;

/**
 * Java 提供了流的包装类，可以将一个流包装在另一个流中，以增强其功能。
 */

public class BufferedStreamDemo1 {
    public static void main(String[] args) throws IOException {
        /**
         * 缓冲流（Buffered Stream） 是对 字节流 和 字符流 的一种增强，它通过引入缓冲区来提高数据的读写效率。
         * 在没有缓冲区时，每次数据的读写操作都需要直接与外部设备（如文件、网络等）进行交互，而缓冲流将数据暂存到内存中的缓冲区，从而减少了对外部设备的访问次数，提高了性能。
         */
        /**
         * 字节缓冲流
         * 1.字节缓冲输入流
         * 2.字节缓冲输出流
         * 单个字节
         */
        //1.创建缓冲流对象
        //字节缓冲输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/com/example/file/a.txt"));
        //字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/com/example/file/b.txt"));
        //2.循环读取并写到目的地
        int read = bis.read();
        while (read != -1) {
            bos.write(read);
            read = bis.read();
        }
        //3.释放资源
        bos.close();
        bis.close();
    }
}
